# @Time    :2025/3/25 16:15
# 5.6.1 创建字典
# 可以通过{}或dict()创建字典。
# dict1 = {}
# dict2=dict()
# print(type(dict2),type(dict1))

dict3 = {"name": "lisi", "age": "13", "gender": "girl"}
print("dict3的数据和类型是", dict3, type(dict3))
dict4 = dict(name="li", age=20, gender="male")
dict5 = dict([("name", "li"), ("age", "12"), ("gender", "male")])
print("dict4的数据和类型是", dict4, type(dict4))
print("dict5的数据和类型是", dict5, type(dict5))
# 也可以通过字典推导式创建字典。
dicts = {i: i * 2 for i in range(1, 4)}
print(dicts)

# 5.6.2 访问字典
# 可通过 [] 访问字典中的元素。key不存在时会报错。
dict3 = {"name": "lisi", "age": "13", "gender": "girl"}
print(dict3["name"])
# print(dict3["qq"]) #key不存在时，会报错

#   dict.get(key[,default])	获取字典中key对应value，可设置默认值
# 也可以通过get()获取字典中的元素。key不存在时会返回None，也可以指定默认值。
print(dict3.get("da"))
print(dict3.get("ssa", "SSA"))

# 5.6.3 向字典中添加元素
# 为字典指定的key赋值value，若key原本不存在则会被添加。
dict3 = {"name": "lisi", "age": "13", "gender": "girl"}
dict3["san"] = "wang"

print("执行添加操作：", dict3)
# 5.6.4 修改字典中元素
# 通过key修改对应的value
dict3["name"] = "www"
print("执行修改操作：", dict3)

# 5.6.5 检查成员是否为字典中的key
dict3 = {"name": "lisi", "age": "13", "gender": "girl"}
print("age" in dict3)

# 5.6.6 获取字典长度
dict1 = {"name": "Alice", "age": 81, "gender": "male"}
print(len(dict1))
# 5.6.7 遍历字典
my_dict = {'Name': 'Tom', 'Age': 17}
print("_" * 70)
# 遍历出所有k
for key in my_dict.keys():
    print(key)
print("_" * 70)
# 遍历出所有v
for value in my_dict.values():
    print(value)

print("_" * 70)
# k-v遍历
# for k,v in my_dict:
keys = my_dict.keys()
print(keys)
for k in keys:
    print(k + "----" + str(my_dict[k]))
# --------------------------------------
for i in my_dict.items():
    print("kv:", i)
# --------------------333--  --------------
kv = my_dict.items()
for i in kv:
    print(i)

# 5.6.8 删除字典元素
my_dict = {'Name': 'Tom', 'Age': 17}
del my_dict['Name']  # 删除键 'Name'
# my_dict.clear()     # 清空字典
# del my_dict         # 删除字典

print(my_dict)
# 5.6.9 常用函数
# 函数	说明
# del dict[key]	根据key删除键值对
# dict.pop(key[,default])	获取key所对应的value，同时删除该键值对，可设置默认值
# dict.popitem()	取出字典中的最后插入的键值对，字典为空则报错
# dict.clear()	清空字典
# dict1.update(dict2)	将dict2中的键值对更新到dict1中
# dict.get(key[,default])	获取字典中key对应value，可设置默认值
# dict.setdefault(key[,default])	获取字典中key对应value，可设置默认值。若key不存在于字典中，将会添加key并将value设为默认值
# dict.keys()	获取字典所有的key，返回一个视图对象。字典改变，视图也会跟着变化
# dict.values()	获取字典所有的value，返回一个视图对象
# dict.items()	获取字典所有的(key,value)，返回一个视图对象
# dict.copy()	拷贝字典
# dict.fromkeys(seq[,default])	以序列seq中元素做字典的key创建一个新字典，可设置value的默认值


# ----------字典的遍历 key-------
print(" ---------遍历 key----------   ")
my_dict = {'Name': 'Tom', 'Age': 17}
for k in my_dict.keys():
    print(k)

print(" ---------遍历 values----------   ")
for v in my_dict.values():
    print(v)

print(" ---------遍历 对 k,v同时遍历--方式1--------   ")
key = my_dict.keys()  # 取出字典里的所有键 放到key
# print(key)
for k in key:  # 逐一访问key 里的每一个键
    print(k, "-------->", my_dict.get(k))  # 获取字典里的值，如果没有则返回None

print(" ---------遍历 对 k,v同时遍历--方式2--------   ")
item = my_dict.items()
for it in item:
    print(it)

print("--" * 20)
dict1 = {"name": "Alice", "age": 81, "gender": "male"}
keys = dict1.keys()
for k in keys:
    print(f"{k}-------------------------{dict1.get(k)}")






print("-----------==========-------------------------------===========--------")

list1 = ["name", "age", "a"]
list2 = ["w", 12, "q"]
#dict1={x:y for x in list1 for y in list2}
dict1=list(zip(list1,list2))

# i = 0
# for x in list1:
#     dict1[x] = 'None'
#     for y in list2[i:]:
#         if dict1[x] == 'None':
#             dict1[x] = y
#             break
#     i += 1
print(dict1, type(dict1))



#
# def students():
#     return {
#     name: round(sum(scores.values())/len(scores), 2)
#           if scores else 0
#             for name, scores in students.items()}
#
#
# updated_scores = 0
# for name, scores in students.items():
#    print( round(sum(scores.values()) / len(scores), 2))

